package com.meihuayishu.backend.service;

import com.meihuayishu.backend.dto.DivinationResult;
import com.meihuayishu.backend.dto.DivinationResultV2;
import com.meihuayishu.backend.dto.TextDivinationRequest;

public interface DivinationService {
    
    /**
     * 执行时间起卦
     * @param timestamp 时间戳
     * @return 占卜结果
     */
    DivinationResult performTimeDivination(Long timestamp);
    
    /**
     * 执行个性化时间起卦（统一使用增强版算法）
     * @param timestamp 时间戳
     * @param userId 用户ID
     * @param question 问题
     * @return 占卜结果
     */
    DivinationResult performPersonalizedTimeDivination(Long timestamp, Long userId, String question);
    
    /**
     * 执行数字起卦
     * @param number1 第一个数字
     * @param number2 第二个数字
     * @return 占卜结果
     */
    DivinationResult performNumberDivination(Integer number1, Integer number2);
    
    /**
     * 使用AI解读卦象
     * @param originalName 本卦名称
     * @param changedName 变卦名称
     * @param question 问题（可选）
     * @param aiProvider AI提供商（可选）
     * @return AI解读结果
     */
    String interpretDivination(String originalName, String changedName, String question, String aiProvider);
    
    /**
     * 使用AI解读卦象（默认提供商）
     * @param originalName 本卦名称
     * @param changedName 变卦名称
     * @param question 问题（可选）
     * @return AI解读结果
     */
    default String interpretDivination(String originalName, String changedName, String question) {
        return interpretDivination(originalName, changedName, question, null);
    }
    
    /**
     * 执行图片起卦
     * @param question 占卜问题
     * @param image 图片文件
     * @param algorithm 算法类型
     * @param extractFeatures 是否提取特征
     * @return 占卜结果
     */
    DivinationResultV2 performImageDivination(String question, org.springframework.web.multipart.MultipartFile image, String algorithm, Boolean extractFeatures);
    
    /**
     * 执行文本起卦
     * @param request 文本起卦请求
     * @return 占卜结果
     */
    DivinationResultV2 performTextDivination(TextDivinationRequest request);
}